package sv.com.renacempleo.dao.red;

import java.util.List;

import org.hibernate.criterion.DetachedCriteria;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Projections;
import org.hibernate.criterion.Restrictions;

import sv.com.renacempleo.dao.BaseDaoImpl;
import sv.com.renacempleo.dto.red.RedFormacionDemandante;
import sv.com.renacempleo.exception.WebException;

public class RedFormacionDemandanteDaoImpl extends BaseDaoImpl implements RedFormacionDemandanteDao{
	@SuppressWarnings("unchecked")
	public List<Object[]> findAllFormacionAcademicaByDemandante(
			Long redDemandanteFolio) throws WebException {
		DetachedCriteria criteria = DetachedCriteria.forClass(RedFormacionDemandante.class);
		criteria.addOrder(Order.asc("redFormacionDemandanteId"));
		criteria.createAlias("redDemandante", "redDemandante");
		criteria.createAlias("ctgEscolaridad", "ctgEscolaridad");
		criteria.createAlias("ctgEspecialidad", "ctgEspecialidad");
		criteria.add(Restrictions.eq("redDemandante.redDemandanteFolio", redDemandanteFolio));
		criteria.setProjection(Projections.projectionList().
				add(Projections.property("redDemandante.redDemandanteFolio")).
				add(Projections.property("ctgEscolaridad.ctgCatalogoId")).
				add(Projections.property("ctgEscolaridad.ctgCatalogoNombre")).
				add(Projections.property("ctgEspecialidad.ctgCatalogoId")).
				add(Projections.property("ctgEspecialidad.ctgCatalogoNombre")).
				add(Projections.property("redFormacionDemandanteInstitucion"))
		);
		return (List<Object[]>) findByCriteria(criteria);
	}
}
